/**
 * 类型、默认值、预定义模式修饰符、自定义模式修饰符
 * type default trim set()
 * 索引 index 唯一索引 unique
 */

// 引入mongoose
const mongoose = require('mongoose')

// 连接数据库
// authSource=admin表示用认证来源是root管理员admin
mongoose.connect('mongodb://admin:123456@localhost/db01?authSource=admin')
const db = mongoose.connection
db.on('error', console.error.bind(console, 'connection error:')) 
db.once('open', () => {
  console.log('connection success')
})

// 定义schema 操作user表
const UserSchema = mongoose.Schema({
  username: {
    type: String,
    trim: true
  },
  password: String,
  status: {
    type: String,
    default: 1 
  },
  url: {
    type: String,
    set(params) {
      if(!params) return params
      if(params.indexOf('http://') != 0 && params.indexOf('https://') != 0) {
        return `http://${params}`
      }
    }
  }
})

// 定义数据库模型 model第一个参数注意首字母大小，
// 与数据库表名对应（默认复数：users, 也可以指定第三个参数映射）
const User = mongoose.model('User', UserSchema, 'user')

// 查询
// User.find({}, (err, doc)=> {
//   if(err) return console.log(err)
//   console.log(doc)
// })

// 增加
const user = new User({
  username: '    zhangsan6   ',
  password: 'set',
  url: 'www.baidu.com'
})
user.save((err) => {
  if(err) return console.log(err)
  console.log('增加数据成功')
})

// 更新
// User.updateOne({"_id":"62456c7b4f3233650c6752f6"}, {"username":"张三"}, (err, doc) => {
//   if(err) return console.log(err)
//   console.log(doc)
// })

// 删除
// User.deleteOne({"_id":"6246784b84f795a5b6fa3c5f"}, (err, doc) => {
//   if(err) return console.log(err)
//   console.log(doc)
// })